<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    2.ReactDOM.render： 是 React 的最基本方法，用于将模板转为 HTML 语言，并插入指定的 DOM 节点。
    3.jsx语法: HTML 语言直接写在 JavaScript 语言之中，不加任何引号，这就是 JSX 的语法，它允许 HTML 与 JavaScript 的混写; JSX 的基本语法规则：遇到 HTML 标签（以 < 开头），就用 HTML 规则解析；遇到代码块（以 { 开头），就用 JavaScript 规则解析。
    4组件：React.createClass 方法就用于生成一个组件类,模板插入就是实例化，组件类必须大驼峰，属性className和htmlFor
    5.插槽this.props.children 属性。它表示组件的所有子节点;值的可能性：1.undefined,2.object,3.array;React.Children.map 来遍历子节点，
    6.PropsType 组件的属性可以接受任意值，字符串、对象、函数等等都可以。getDefaultProps 方法可以用来设置组件属性的默认值
    7.获取真实的DOM节点 ref属性；this.refs.[refName] 属性获取的是真实 DOM ，所以必须等到虚拟 DOM 插入文档以后，才能使用这个属性，否则会报错。
    8.this.state通过 this.state 属性读取。this.setState 方法就修改状态值，每次修改以后，自动调用 this.render 方法，再次渲染组件。
    9.表单不能用 this.props.value 读取，而要定义一个 onChange 事件的回调函数，通过 event.target.value 读取用户输入的值。textarea 元素、select元素、radio元素都属于这种情况
    10.生命周期 will 函数在进入状态之前调用，did 函数在进入状态之后调用，
    Mounting：已插入真实 DOM
    Updating：正在被重新渲染
    Unmounting：已移出真实 DOM  
componentWillMount()
componentDidMount()
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
componentWillUnmount()
componentWillReceiveProps(object nextProps)：已加载组件收到新的参数时调用
shouldComponentUpdate(object nextProps, object nextState)：组件判断是否重新渲染时调用
11.Ajax componentDidMount 方法设置 Ajax 请求，等到请求成功，再用 this.setState 方法重新渲染 UI 
11.Redux
使用场景：多交互，多数据源（1）Web 应用是一个状态机，视图与状态是一一对应的。（2）所有的状态，保存在一个对象里面。
        store一个保存数据的容器Redux 提供createStore这个函数，用来生成 Store。createStore接受另一个函数为参数，返回新store 
        state某个时点的数据，对 Store 生成快照的数据集合。通过store.getState()拿到。一个 State 对应一个 View。
        action 描述当前发生的事情。改变 State 的唯一办法，它会运送数据到 Store。 Action 就是 View 发出的通知，表示 State 应该要发生变化了
        Action 是一个对象。其中的type属性是必须的，表示 Action 的名称。其他属性可以自由设置，
        Action Creator生成action的函数
        store.dispatch() View 发出 Action 的唯一方法。接受一个 Action 对象作为参数，将它发送出去
        Reducer    Store 收到 Action 以后，必须给出一个新的 State，这样 View 才会发生变化。这种 State 的计算过程就叫做 Reducer。Reducer 是一个函数，它接受 Action 和当前 State 作为参数，返回一个新的 State。
        store.dispatch方法会触发 Reducer 的自动执行。
        Store 需要知道 Reducer 函数，做法就是在生成 Store 的时候，将 Reducer 传入createStore方法。
        const store = createStore(reducer);
        createStore接受 Reducer 作为参数，生成一个新的 Store。以后每当store.dispatch发送过来一个新的 Action，就会自动调用 Reducer，得到新的 State。
        纯函数  Reducer 是一个纯函数
        纯函数
        不得改写参数
        不能调用系统 I/O 的API
        不能调用Date.now()或者Math.random()等不纯的方法，因为每次会得到不一样的结果
        Reducer 函数里面不能改变 State，必须返回一个全新的对象，
        store.subscribe方法设置监听函数，一旦 State 发生变化，就自动执行这个函数
12.immutable
        











        
</body>
</html>